package control;

import java.util.ArrayList;

import lectorExcel.ReadExcel;
import componentes.Aldea;
import componentes.Tesoro;

public class MapaControl {
	
	ReadExcel excel = new ReadExcel();

	public ArrayList<Aldea> cargar_aldeas_con_tesoros() {
		ArrayList<Aldea> listasAldeas = new ArrayList<Aldea>();
		ArrayList<Integer> tesoroAldea = new ArrayList<Integer>();
		Tesoro tesoro;
	
		String aldeas_distancias[][] = null;
		aldeas_distancias = excel.getDistancias();
		
		
		for(int i=1; i<12;i++){
			Aldea aldea = new Aldea();
			ArrayList<String> vecinos = null;
			
			aldea.setNombre(aldeas_distancias[0][i]);
						
			
			tesoroAldea = excel.getTesoros(aldeas_distancias[0][i]);
			tesoro = new Tesoro(tesoroAldea.get(0), tesoroAldea.get(1), tesoroAldea.get(2), tesoroAldea.get(3), tesoroAldea.get(4));
			aldea.setTesoro(tesoro);
			
			
			vecinos = this.getVecinos(aldeas_distancias, i);
			aldea.setVecinos(vecinos);
			
			aldea.setisAldeaInicial(this.isAldeaIncial(aldeas_distancias[i][0]));
			aldea.setisAldeaFinal(this.isAldeaFinal(aldeas_distancias[i][0]));
			
			aldea.setAcumulado(valorAcumulado(aldea.getNombre()));

						
			listasAldeas.add(aldea);
		}
		
		return listasAldeas;
	}
	
	

	private boolean isAldeaFinal(String cadena) {
		// TODO Auto-generated method stub
		if(cadena.contains("(final)")){
				return true;
		}
		else{
			return false;
		}
	}

	private boolean isAldeaIncial(String cadena) {
		// TODO Auto-generated method stub
		if(cadena.contains("(inicio)")){
			return true;
		}
		else{
			return false;
		}
	}

	private ArrayList<String> getVecinos(String[][] aldeas_distancias, int posicion_aldea) {
		
		// TODO Auto-generated method stub
		ArrayList<String> vecinos = new ArrayList<String>();
		
		for(int j=1; j<12; j++){
			if(aldeas_distancias[posicion_aldea][j] != "-" && aldeas_distancias[posicion_aldea][j] != "0"){
				//Si es distinto significa que la aldea tiene un vecino en la posicion j
				vecinos.add(aldeas_distancias[j][0]);
			}
			
		}
		return vecinos;
		
	}

	
	public int[][] cargar_distancias() {
		int aux[][] = new int[12][12];
		String aldeas_distancias[][] = null;
		aldeas_distancias = excel.getDistancias();
		
		for(int i=1;i<12;i++){
			for(int j=1;j<12;j++){
				if(aldeas_distancias[i][j].toString().compareTo("-")==0){
					aux[i][j]= -1;
				}
				else{
					aux[i][j]= Integer.parseInt(aldeas_distancias[i][j].toString());						
				}
				
			}
		}
		
		return aux;
	}



	public ArrayList<Aldea> cargar_aldeas() {
		ArrayList<Aldea> listasAldeas = new ArrayList<Aldea>();
				
		String aldeas_distancias[][] = null;
		aldeas_distancias = excel.getDistancias();
		Tesoro tesoroAldea;
		
		for(int i=1; i<12;i++){
			Aldea aldea = new Aldea();
			ArrayList<String> vecinos = null;
			
			aldea.setNombre(aldeas_distancias[0][i]);
			
			tesoroAldea = new Tesoro();
			tesoroAldea.setContenido(0, 0, 0, 0, 0, 0, 0);
			aldea.setTesoro(tesoroAldea);
			
			
			vecinos = this.getVecinos(aldeas_distancias, i);
			aldea.setVecinos(vecinos);
			
			aldea.setisAldeaInicial(this.isAldeaIncial(aldeas_distancias[i][0]));
			aldea.setisAldeaFinal(this.isAldeaFinal(aldeas_distancias[i][0]));
			
			aldea.setAcumulado(valorAcumulado(aldea.getNombre()));
			
			listasAldeas.add(aldea);
		}
		return listasAldeas;

	}



	private int valorAcumulado(String nombre) {

		if(nombre.equals("Aragaey"))
			return 1250;
		
		if(nombre.equals("Icaedur"))
			return 800;
		
		if(nombre.equals("Cenede"))
				return 0;
		
		if(nombre.equals("Ase"))
			return 200;
		
		if(nombre.equals("Mixocu"))
			return 400;
		
		if(nombre.equals("Cabe"))
			return 900;
		
		if(nombre.equals("Vinizaile"))
			return 700;
		
		if(nombre.equals("Bulovos"))
			return 450;
		
		if(nombre.equals("Bresol"))
			return 1100;
		
		if(nombre.equals("Peregary"))
			return 1150;
	
		if(nombre.equals("Ergintone"))
			return 1350;
	
		
		return 0;
				
		
	}


	
	

}
